home *** CD-ROM | disk | FTP | other *** search
- /** -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Stuart Parmenter <pavlov@netscape.com>
- * Chris Saari <saari@netscape.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- #include "nsISupports.idl"
- #include "gfxtypes.idl"
- #include "gfxIFormats.idl"
-
- %{C++
- #include "nsRect.h"
- %}
-
- native nsRectRef(nsIntRect &);
-
- /**
- * gfxIImageFrame interface
- *
- * All x, y, width, height values are in pixels.
- *
- * @author Tim Rowley <tor@cs.brown.edu>
- * @author Stuart Parmenter <pavlov@netscape.com>
- * @version 0.1
- */
- [scriptable, uuid(f6d00ee7-defc-4101-b2dc-e72cf4c37c3c)]
- interface gfxIImageFrame : nsISupports
- {
- /**
- * Create a new \a aWidth x \a aHeight sized image.
- *
- * @param aX The x-offset from the origin of the gfxIImageContainer parent.
- * @param aY The y-offset from the origin of the gfxIImageContainer parent.
- * @param aWidth The width of the image to create.
- * @param aHeight The height of the image to create.
- * @param aFormat the width of the image to create.
- *
- * @note The data of a new image is unspecified (Whats the word i'm looking for here?).
- */
- void init(in PRInt32 aX,
- in PRInt32 aY,
- in PRInt32 aWidth,
- in PRInt32 aHeight,
- in gfx_format aFormat,
- in gfx_depth aDepth);
-
- /**
- * TRUE by default. When set to FALSE, you will no longer be able to make any modifications
- * to the data of the image. Any attempts will fail.
- */
- attribute boolean mutable;
-
- /**
- * The x-offset of the image.
- */
- readonly attribute PRInt32 x;
-
- /**
- * The y-offset of the image.
- */
- readonly attribute PRInt32 y;
-
- /**
- * The width of the image.
- */
- readonly attribute PRInt32 width;
-
- /**
- * The height of the image.
- */
- readonly attribute PRInt32 height;
-
- /**
- * The rectangle this frame ocupies.
- * @param rect this is really an out parameter.
- */
- [noscript] void getRect(in nsRectRef rect);
-
- /**
- * The image data format the image was created with.
- * @see gfxIFormats
- */
- readonly attribute gfx_format format;
-
- /**
- * returns whether the image requires the background to be painted
- */
- readonly attribute boolean needsBackground;
-
- /* data accessors */
- readonly attribute unsigned long imageBytesPerRow;
-
- /**
- * returns the number of bytes allocated for the image
- */
- readonly attribute unsigned long imageDataLength;
-
- // XXX do we copy here? lets not...
- void getImageData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
-
- /**
- * Sets \a length bytes of \a data in this object.
- * @param offset The offset from the first pixel in bytes. To set
- * data beginning with the first (top left) pixel in the image, \a offset
- * should be 0; to set data beginning with, for example, the sixth pixel in
- * the first row of a RGBA32 image, the offset should be 20.
- * @attension should we use PRUint32 instead?
- */
- void setImageData([array, size_is(length), const] in PRUint8 data,
- in unsigned long length,
- in long offset);
-
- /**
- * Lock image pixels before addressing the data directly
- */
- void lockImageData();
-
- /**
- * Unlock image pixels
- */
- void unlockImageData();
-
-
-
- /* alpha stuff.. used for _A1 and _A8 formated images */
- readonly attribute unsigned long alphaBytesPerRow;
-
- /**
- * returns the number of bytes allocated for the alpha mask
- */
- readonly attribute unsigned long alphaDataLength;
-
- // XXX do we copy here? lets not...
- void getAlphaData([array, size_is(length)] out PRUint8 bits, out unsigned long length);
-
- /**
- * Sets \a length bytes of \a data in this object.
- */
- void setAlphaData([array, size_is(length), const] in PRUint8 data,
- in unsigned long length,
- in long offset);
-
- /**
- * Lock alpha pixels before addressing the data directly
- */
- void lockAlphaData();
-
- /**
- * Unlock alpha pixels
- */
- void unlockAlphaData();
-
-
-
- /* GIF Specific methods. These should be in a different class or interface. */
-
- /**
- * Blit this frame into another frame. Used for GIF animation compositing
- */
- void drawTo(in gfxIImageFrame aDst,
- in PRInt32 aDX,
- in PRInt32 aDY,
- in PRInt32 aDWidth,
- in PRInt32 aDHeight);
-
- /**
- * Represents the number of milliseconds until the next frame should be displayed.
- * @note -1 means that this frame should be displayed forever.
- */
- attribute long timeout;
-
- /* frame disposal method, used only by GIFs. Should probably subclass image frame
- * and image container for GIFs special needs, but for simplicity it is here for the
- * moment
- */
- attribute long frameDisposalMethod;
-
- /* frame background color
- * GIF specific, should be in a GIF specific frame
- */
- attribute gfx_color backgroundColor;
- };
-